#include <iostream>

using namespace std;

//这种方式只适用于一个测试用例，单次执行结果没错，但是多次调用时，上次的结果没有清除，继续执行时会延续上次的结果继续累加。
//class Sum
//{
//public:
//	Sum()
//	{
//		_sum += _i;
//		++_i;
//	}
//	static int GetSum()
//	{
//		return _sum;
//	}
//private:
//	static int _i; //静态变量属于这个类，不是但属于一个对象，即这个类实例化出的所有对象的_i都是同一个
//	static int _sum;
//};
//
//int Sum::_i = 1;
//int Sum::_sum = 0;
//
//int main()
//{
//	Sum a[5];//使用数组的方式，来创建n个对象，调用n次构造函数，
//	cout << Sum::GetSum() << endl;
//	return 0;
//}

//解决多测试用例时连续调用的问题。具体解释见笔记类与对象3.
class Sum
{
public:
	Sum()
	{
		_sum += _i;
		++_i;
	}
	static int GetSum()
	{
		return _sum;
	}
	static void Init()
	{
		_sum = 0;
		_i = 1;
	}
private:
	static int _i;
	static int _sum;
};

int Sum::_i = 1; //静态成员变量要在类外定义
int Sum::_sum = 0;

class Solution {
public:
	int Sum_Solution(int n) {
		Sum*p = new Sum[n];
		int ret = Sum::GetSum();
		Sum::Init();
		return ret;
	}
};

int main()
{
	Solution st;
	cout << st.Sum_Solution(5) << endl;
	cout << st.Sum_Solution(5) << endl;
	return 0;
}
